package Git2024_5_8;

public class Git1 {
    //SSM框架
    /**
    框架
        Git
        Maven
        SSM
        Framework
        Spring MVC
        MyBatis
        Lombok
        Knife4j
        AOP
        拦截器等框架
     */
    //Linux+Redis数据库

    //邮箱 wangweichao@tedu.cn
    //微信 13603263409


    /**
     * 1 Git
     *  协同开发
     *  本地版本控制
     * 例如
     *  电商网站模块拆分:
     *      用户模块: 登录 注册 修改密码 第三方登录..
     *      商品模块: 首页展示 商品页展示 详情页..
     *      购物车模块: 增删改查..
     *      订单模块: 增删改查..
     *      支付模块: 第三方支付或自研支付模式..
     *
     *  分配任务 同时进行开发
     *  周期性代码合并---Git
     *
     */

    //Git
    //开源的分布式版本控制系统

    /**
     * 版本控制
     *  有一个公用的服务器 用于保存所有版本的进化进程 即每一次代码提交后的代码变化
     *   该服务器可以进行版本穿梭
     *
     * 版本控制工具
     *  1 集中式 SVN 所有版本控制都集中在服务器端 存在单点故障问题 硬件损坏或网络波动 从而导致服务器宕机
     *  2 分布式 Git 允许开发者在本地存储和管理代码版本的系统
     *              优点 服务器断网情况下也可以进行开发 版本控制是在本地的
     *
     */

    /**
     * Git工作流程
     *  1 工作区间编写代码
     *  2 上传到缓存区
     *  3 上传到本地仓库 并被记录一个唯一的版本记录 自己可以在后续工作中进行历史版本穿梭 其他人无法得见
     *  4 上传到远程仓库(云端)---所有人都能看到其他人的历史版本记录
     *    基于Git创建的远程代码托管中心
     *      外网 Github https://github.com/
     *      国内 Gitee码云 https://gitee.com/
     */

    /**
     * 命令能用tab键补齐的坚决不手写
     * 上下箭头可以翻出前面执行过的命令
     * ctrl 滑轮 放大字号
     * 命令上面的三种颜色的字符串 最后黄色的部分表示命令窗口是在电脑什么位置打开的 例如~/Desktop表示桌面打开
     *
     * Git常用命令
     * 设置签名 识别身份 只需要设置一次 后需更改只需要重新执行一下这两条命令即可
     *      用户名: git config --global user.name zhang
     *      邮箱: git config --global user.email zhang@tedu.cn
     *
     * 创建文件夹 设置名字 此文件夹就是未初始化的本地仓库
     * 初始化为本地仓库命令 git init
     *      回车会弹出日志 标明了何时何地初始化了本地仓库
     * 查看当前仓库状态 git status
     * 若有显示红色的文件名 则表示该文件未添加到暂存区 例如 hello.txt
     *
     * *** 将指定文件添加到暂存区  git add hello.txt
     *      会显示一串绿色文段 如 new file:   hello.txt
     *
     * *** 将指定文件提交到本地仓库  git commit -m "第一次提交" hello.txt
     *      其中-m表示-message
     *
     * 查看提交的历史版本信息 git log
     *      其中log表示日志
     *      会显示详细信息 日期等等
     *
     * 显示简单的版本信息 git reflog
     *      例如显示了一个e3143ce的版本号
     *
     * 根据git reflog提供的版本号(例如e3143ce) 进行版本穿梭 git reset --hard e3143ce
     */

    /**
     * 分支操作🐖
     * 分支可以看作是项目开发的不同版本线，它允许你在不影响主分支（通常是`master`）的情况下进行实验性开发。
     *      当创建一个新的分支时，Git记录了当前`master`分支的状态，但这并不涉及实际文件的物理复制。
     *      实际上，所有分支共享同一代码库，每个分支只是指向特定提交的一个指针。
     *      在分支上进行的修改只影响该分支，不会立即影响`master`或其他分支。
     *      只有当将分支的更改合并回`master`时，主分支的代码才会反映出这些变更。
     *
     * master 主分支 初始化本地仓库后 默认为master主分支
     *      后续开发过程中 一般不会改变master中的代码 而是创建其他分支进行操作
     *      操作完后合并到master主分支中
     *
     *      包括修改master中的bug等 也不会在其本身进行调整 而是创建单独分支进行检修调试
     *      操作完后合并到master上
     */

    /**
     * 查看当前有哪些分支
     * git branch -v 其中v代表 verbose（详细）
     *
     * 创建分支 以hot-fix分支为例
     * git branch hot-fix
     *
     * 切换分支 以hot-fix分支为例
     * git checkout hot-fix
     * 若提示Switched to branch 'hot-fix'则表示切换成功 此时命令上面的蓝色字段表示为: (hot-fix)
     * 在其中进行的操作不会影响主分支内容
     *
     * 合并内容 想要合并到哪个分支 就要先切换到目标分支 再进行合并
     * git checkout master    表示切换到目标分支 此处目标分支为主分支
     * git merge hot-fix      表示将hot-fix中的内容合并到master主分支上
     *
     * 删除分支 git branch -D 分支名
     *
     * * 过程
     *    1 修改master,add+commit
     *    2 切换分支到hot-fix
     *    3 修改hot-fix,add+commit
     *    4 切换分支到master
     *    5 合并分支
     *    6 处理合并冲突问题
     * 合并冲突
     *  合并时 master主分支和次要分支之间若在同一行有着不同语句 且都传输到本地仓库了 此时若想合并 会产生合并冲突
     *  此时最后分支提示词会变为(master|MERGING) MERGING: 合并中
     *  进入原文件进行手动合并 并重新add和commit上传 目标分支的内容就在人为干预的辅助下成功改变了
     *  注意 在此时commit时 不需要再写文件名 而是直接只写到标注就可以了
     *  此时原分支中的内容不受影响
     */

    /**
     * Gitee使用
     * 注册登陆后进入主页 右上角有一个加号
     * 点击后进行新建仓库必要选项选择 点击创建即可
     * ...?
     * 创建仓库
     * 切换仓库
     * 初始化
     * ...?
     * 添加到暂存区
     * 提交到本地仓库
     * 给远程仓库地址取一个别名
     * 本地仓库内容推送到指定远程仓库(别名代替仓库地址)
     *
     *
     * 进入仓库
     * 添加别名
     * 推送到远程仓库
     */

    /**
     * 常用方法:
     * 查看当前所有远程地址的别名
     *  git remote -v
     *
     * 将本地仓库内容推送到指定远程仓库
     *  git push git地址/别名 master(指定分支)
     *
     * 将云端git拉取到本地指定分支
     *  git pull git地址/别名 master(指定远程分支)
     *
     * 将云端git克隆到本地仓库
     *  git clone git地址 master(指定远程分支)
     */








}
